package com.med.mapper;


import com.med.entity.DoctorDO;
import com.med.entity.ScheduleDO;
import com.med.vo.AddSchedulingVO;
import com.med.vo.UpdateSchedulingVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * @BelongsProject: Internet-based-healthcare
 * @BelongsPackage: com.med.mapper
 * @Author: 小龚
 * @CreateTime: 2025-08-19 10:11
 * @Description: TODO
 * @Version: 1.0
 */
@Mapper
public interface SchedulingMapper {

    // 查询排班信息
    List<ScheduleDO> getWorkforceList(@Param("doctorName") String doctorName, @Param("departmentId") Integer departmentId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

    // 修改排班状态
    Integer updateWorkforceStatus(Integer scheduleId);

    // 删除排班信息
    Integer deleteWorkforce(Integer scheduleId);

    // 修改排班信息
    Integer updateWorkforce(@Param("vo") UpdateSchedulingVO vo);

    // 修改排班时检测排班冲突
    Integer checkScheduleUpdate(@Param("vo") UpdateSchedulingVO vo);

    // 检查排班是否已经被预约了
    ScheduleDO checkScheduling(@Param("doctorId") Integer doctorId);

    // 根据科室获取医生列表
    List<DoctorDO> getDoctorListByDepartment(Integer departmentId);

    // 新增排班
    Integer addWorkforce(@Param("vo") AddSchedulingVO vo);

    // 新增排班时检测排班冲突
    Integer checkScheduleConflict(@Param("vo") AddSchedulingVO vo);

    // 根据排班id查询排班医生
    Integer getDoctorByScheduleId(Integer scheduleId);
}
